import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import installElementPlus from './plugins/element';
import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import "@/mock/index";
import store from './store';
import axios from 'axios';



// 全局捕获同步错误
const originalOnError = window.onerror;

window.onerror = function (message, source, lineno, colno, error) {
    if (message.toString().includes('ResizeObserver')) {
        // 忽略 ResizeObserver 相关错误
        return true;
    }
    // 其他错误继续抛出
    if (originalOnError) {
        return originalOnError(message, source, lineno, colno, error);
    }
    return false;
};

// 全局捕获未处理的 Promise 错误
window.addEventListener('unhandledrejection', (event) => {
    if (event.reason && event.reason.message && event.reason.message.includes('ResizeObserver')) {
        // 忽略 ResizeObserver 相关的 Promise 错误
        event.preventDefault(); // 阻止默认错误处理
    }
});

//覆盖 ResizeObserver
// if (window.ResizeObserver) {
//     window.ResizeObserver = class {
//         // 显式声明 callback 属性
//         private callback: ResizeObserverCallback;

//         constructor(callback: ResizeObserverCallback) {
//             this.callback = callback;
//         }

//         observe() {
//             // 不执行任何操作
//         }

//         unobserve() {
//             // 不执行任何操作
//         }

//         disconnect() {
//             // 不执行任何操作
//         }
//     };
// }

// 创建 Vue 应用
type ElementPlusLocale = any; // 这里根据实际类型定义替换，若没有合适定义可先设为any
const app = createApp(App).use(store);

// 注册 Element Plus 图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component);
}

// 安装 Element Plus
installElementPlus(app);

// 配置 axios
axios.defaults.baseURL = '';
axios.defaults.timeout = 10000;
app.config.globalProperties.$axios = axios;

// 挂载应用
app.use(router).mount('#app');